<?php
class Cooperativa extends Doctrine_Record {
    public function setTableDefinition() {
        $this->setTableName('cooperativa');
        $this->hasColumn('nombre','string',255);
        $this->hasColumn('calle','string',255);
        $this->hasColumn('numero','integer',5);
        $this->hasColumn('cp','string',8);
        $this->hasColumn('piso','string',255);
        $this->hasColumn('email','string',255);
        $this->hasColumn('categoriasString','string',255);
        $this->hasColumn('horario','string',255);
        $this->hasColumn('web','string',255);
        $this->hasColumn('estrategia','string',10000);
        $this->hasColumn('recepcion','string',10000);
        $this->hasColumn('retiro','string',10000);
        $this->hasColumn('descripcion','string',10000);
        $this->hasColumn('telefono','string', 255);
        $this->hasColumn('modificado','integer');
        $this->hasColumn('id_estado','integer');
        $this->hasColumn('id_seguidor','integer'); //usuarios que marcaron la cooperativa como favorito relacion n a n
        $this->hasColumn('id_categoria','integer'); //categorias (tapitas, papel) relacion n a n
    }
    
    public function setUp(){
        $this->hasOne('Estado as estado',array(
            'local'=>'id_estado',
            'foreign'=>'id'
        ));
        $this->hasMany('Imagen as imagenes',array(
            'local'=>'id',
            'foreign'=>'id_cooperativa'
        ));
        $this->hasMany('Usuario as seguidores', array(
            'local' => 'id_seguidor',
            'foreign' => 'id_cooperativa_favorito',
            'refClass' => 'FavoritoCooperativa'
        ));
        $this->hasMany('Categoria as categorias', array(
            'local' => 'id_categoria',
            'foreign' => 'id_cooperativa',
            'refClass' => 'CooperativaCategoria'
        ));
    }
    
    //INCIO DE GETERS Y SETERS
    public function getNombre () {
        return utf8_decode($this->_get('nombre'));
    }
    public function setNombre ($nombre) {
        $this->_set('nombre', utf8_encode($nombre));
    }
    
    public function getNombreUrl () {
        return $this->normalizar($this->_get('nombre'));
    }

    public function getCalle () {
        return utf8_decode($this->_get('calle'));
    }
    public function setCalle ($calle) {
        $this->_set('calle', utf8_encode($calle));
    }

    public function getHorario () {
        return utf8_decode($this->_get('horario'));
    }
    public function setHorario ($horario) {
        $this->_set('horario', utf8_encode($horario));
    }
    //---------
    public function getEstrategia () {
        return utf8_decode($this->_get('estrategia'));
    }
    public function setEstrategia ($estrategia) {
        $this->_set('estrategia', utf8_encode($estrategia));
    }
    
    public function getRecepcion () {
        return utf8_decode($this->_get('recepcion'));
    }
    public function setRecepcion ($recepcion) {
        $this->_set('recepcion', utf8_encode($recepcion));
    }
    
    public function getRetiro () {
        return utf8_decode($this->_get('retiro'));
    }
    public function setRetiro ($retiro) {
        $this->_set('retiro', utf8_encode($retiro));
    }
    
    public function getDescripcion () {
        return utf8_decode($this->_get('descripcion'));
    }
    public function setDescripcion ($descripcion) {
        $this->_set('descripcion', utf8_encode($descripcion));
    }
    //---------
    public function getCategoriasString () {
        $c = $this->_get('categoriasString');
        return substr($c, 0, -2);
    }
    
    public function getDireccion () {
        $piso = ($this->piso)?' '.$this->piso:'';
        //$region = $this->comuna->provincia->region->contenido;
        $comuna = $this->comuna->contenido;
        $numero = ($this->numero)?$this->numero:'';
        //return $this->calle.' '.$this->numero.' - '.$comuna.', '.$region;
        return $this->calle.' '.$numero.',   '.$comuna;
    }
    
    public function getUltimaModificacion () {
        return date('D, d M Y H:i:s', $this->_get('modificado'));
    }
    
    public function getTips () {
        $q = Doctrine_Query::create()
            ->select('c.*')
            ->from('comentario c')
            ->where('c.idObjetoComentado = '.$this->id)
            ->andWhere('c.id_estado = 1');
        return $q->execute();
    }
    //FIN SETERS Y GETERS
    
    //MANEJO DE LAS CATEGORIAS
    public function inCategorias ($categoria) {
        $q = Doctrine_Query::create()
            ->select('COUNT(m.id) as total')
            ->from('marker m')
            ->innerJoin('m.categorias as c')
            ->where('c.id = '.$categoria->id)
            ->andWhere('m.id = '.$this->id);
        $total = $q->execute();
        return ($total->count())?$total[0]->total:0;
    }
    
    public function borrarCategorias () {
        $q = Doctrine_Query::create()
            ->delete('MarkerCategoria')
            ->where('id_categoria = '.$this->id);
	$q->execute();
    }
    
    public function addCategoriasString ($categoria) {
        $cats = $this->_get('categoriasString');
        $this->categoriasString = $cats.$categoria.', ';
    }
    
    public function removeCategoriasString ($categoria) {
        $this->categoriasString = str_replace($categoraia.', ', '', $this->categoriasString);
    }
    
    public function removeAllCategoriasString () {
        $this->_set('categoriasString', '');
    }
    //FIN MANEJO DE LAS CATEGORIAS
}
?>